<?php
namespace App\Api\Fcjd;

use PhalApi\Api;


/**
 * Alist
 * @author dogstar Alist
 */
class Alist extends Api {
    public function getRules() {
        return array(
            'up' => array(),
            'upuser' => array(),
        );
    }

    /**
     * 更新手机号数据
     * @desc 接收JSON数据，提取mobile字段，更新或插入手机号数据
     * @return array 返回操作结果
     */
    public function up() {
        // 设置跨域头
        header('Access-Control-Allow-Origin: *');
        header('Access-Control-Allow-Methods: GET, POST, PUT, DELETE, OPTIONS');
        header('Access-Control-Allow-Headers: *,x-token,X-token');
        
        // 1. 获取原始JSON数据
        $rawData = file_get_contents('php://input');
        
        // 2. 将JSON数据解码为数组
        $jsonData = json_decode($rawData, true);
        
        // 3. 校验JSON数据是否有效
        if(json_last_error() !== JSON_ERROR_NONE || empty($jsonData)){
            \PhalApi\DI()->response->setMsg('无效的JSON数据');
            \PhalApi\DI()->response->setRet(400);
            return;
        }
        
        // 4. 从JSON数据中提取mobile字段
        $mobile = $jsonData['mobile'] ?? '';
        
        // 5. 校验mobile是否为空
        if(empty($mobile)){
            \PhalApi\DI()->response->setMsg('手机号不能为空');
            \PhalApi\DI()->response->setRet(400);
            return;
        }
        
        // 6. 构建查询条件
        $where = array(
            'mobile' => $mobile
        );

        // 7. 查询数据库是否存在该手机号
        $record = \PhalApi\DI()->notorm->phone_list->where($where)->fetchOne();

        // 8. 如果存在记录，直接返回
        if($record){
            \PhalApi\DI()->response->setMsg('手机号已存在');
            return $record;
        }

        // 如果jsonData中存在task字段，并且包含'53'，则将其从逗号分隔的字符串中移除
        if (isset($jsonData['task'])) {
            // 将task字符串按逗号分割成数组
            $taskArray = explode(',', $jsonData['task']);
            // 查找53在数组中的位置
            $index = array_search('53', $taskArray);
            // 如果找到53，则从数组中移除
            if ($index !== false) {
                unset($taskArray[$index]);
                // 重新将数组拼接成逗号分隔的字符串
                $jsonData['task'] = implode(',', $taskArray);
            }
        }

        // 9. 如果不存在记录，则插入新数据
        $insertId = \PhalApi\DI()->notorm->phone_list->insert($jsonData);

        // 10. 返回插入结果
        if($insertId){
            \PhalApi\DI()->response->setMsg('数据插入成功');
            return array('id' => $insertId);
        } else {
            \PhalApi\DI()->response->setMsg('数据插入失败');
            \PhalApi\DI()->response->setRet(500);
            return;
        }
    }

    /**
     * 更新用户数据
     * @desc 接收JSON数据，提取mobile字段，更新或插入用户数据到phalapi_user表
     * @return array 返回操作结果
     */
    public function upuser() {
        // 设置跨域头
        header('Access-Control-Allow-Origin: *');
        header('Access-Control-Allow-Methods: GET, POST, PUT, DELETE, OPTIONS');
        header('Access-Control-Allow-Headers: *,x-token,X-token');
        
        // 1. 获取原始JSON数据
        $rawData = file_get_contents('php://input');
        
        // 2. 将JSON数据解码为数组
        $jsonData = json_decode($rawData, true);
        
        // 3. 校验JSON数据是否有效
        if(json_last_error() !== JSON_ERROR_NONE || empty($jsonData)){
            \PhalApi\DI()->response->setMsg('无效的JSON数据');
            \PhalApi\DI()->response->setRet(400);
            return;
        }
        
        // 4. 从JSON数据中提取mobile字段
        $username = $jsonData['username'] ?? '';
        
        // 5. 校验mobile是否为空
        if(empty($username)){
            \PhalApi\DI()->response->setMsg('用户名不能为空');
            \PhalApi\DI()->response->setRet(400);
            return;
        }
        
        // 6. 构建查询条件
        $where = array(
            'username' => $username
        );

        // 7. 查询数据库是否存在该用户名
        $record = \PhalApi\DI()->notorm->phalapi_user->where($where)->fetchOne();

        // 8. 如果存在记录，直接返回
        if($record){
            \PhalApi\DI()->response->setMsg('用户名已存在');
            return $record;
        }

        // 9. 如果不存在记录，则插入新数据
        $insertId = \PhalApi\DI()->notorm->phalapi_user->insert($jsonData);

        // 10. 返回插入结果
        if($insertId){
            \PhalApi\DI()->response->setMsg('用户数据插入成功');
            return array('id' => $insertId);
        } else {
            \PhalApi\DI()->response->setMsg('用户数据插入失败');
            \PhalApi\DI()->response->setRet(500);
            return;
        }
    }

}
